/**
 * 
 */
package edu.erpan.fachada;

import java.util.List;
import com.ibytecode.util.JNDILookup;
import edu.erpan.bl.bean.ProductoBean;
import edu.erpan.bl.bean.ProductoBeanRemote;
import edu.erpan.bl.entities.Formulacion;
import edu.erpan.bl.entities.Producto;
import edu.erpan.util.entityManager.exceptions.IdNotFoundException;
import edu.erpan.util.entityManager.exceptions.PersistException;
import edu.erpan.util.entityManager.exceptions.QueryException;


/**
 * @author Jeison
 *
 */
public class ProductoFachada implements IProductoFachada {

	/* (non-Javadoc)
	 * @see edu.erpan.fachada.IProductoFachada#consultarProducto(edu.erpan.hibernate.entities.Producto)
	 */
	@Override
	@SuppressWarnings("unchecked")
	public Producto consultarProducto(Producto producto) throws QueryException, IdNotFoundException {
		// TODO Auto-generated method stub
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		return productoBean.findEntity(producto);
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public void guardarProducto(Producto producto) throws PersistException{
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.saveEntity(producto);
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public void editarProducto(Producto producto) throws QueryException, IdNotFoundException{
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.mergeEntity(producto);
	}

	@Override
	@SuppressWarnings("unchecked")
	public void eliminarProducto(Producto producto) throws QueryException, IdNotFoundException{
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.deleteEntity(producto);
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public List<Producto> consultarProductos() throws QueryException{
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		return productoBean.retrieveAllEntities();
	}

	@Override
	@SuppressWarnings("unchecked")
	public void guardarFormulacion(Formulacion formulacion)
			throws PersistException {
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.guardarFormulacion(formulacion);
	}

	@Override
	@SuppressWarnings("unchecked")
	public void editarFormulacion(Formulacion formulacion)
			throws QueryException {
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.editarFormulacion(formulacion);
	}

	@Override
	@SuppressWarnings("unchecked")
	public void eliminarFormulacion(Formulacion formulacion)
			throws QueryException {
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		productoBean.eliminarFormulacion(formulacion);
	}

	@Override
	@SuppressWarnings("unchecked")
	public List<Formulacion> consultarFormulaciones(Producto producto)
			throws QueryException {
		ProductoBeanRemote<Producto> productoBean=JNDILookup.doLookup(ProductoBean.class, ProductoBeanRemote.class);
		return productoBean.consultarFormulaciones(producto);
	}

	
}
